package com.woniu.mapper;

import com.woniu.entity.*;
import org.apache.ibatis.annotations.Param;
import java.util.List;

public interface AllMapper {
    /* ---------- 1. 登录 ---------- */
    Customer login(@Param("username") String username,
                   @Param("password") String password);

    /* ---------- 2. 商品 ---------- */
    List<Product> listProducts(@Param("categoryId") Integer categoryId,
                               @Param("offset") Integer offset,
                               @Param("size") Integer size);

    Product getProduct(@Param("productId") Integer productId);

    /* ---------- 3. 购物车 ---------- */
    int insertCart(Cart cart);

    List<Cart> listCart(@Param("userId") Integer userId);

    int deleteCart(@Param("cartId") Integer cartId);

    int updateCart(@Param("cartId") Integer cartId,
                   @Param("buyNum") Integer buyNum);

    /* ---------- 4. 订单 ---------- */
    int insertOrder(Order order);

    int insertOrderItem(OrderItem item);

    // 根据 customerId + productId 把购物车项状态改为 1
    int updateCartStatusToOrdered(@Param("customerId") Integer customerId,
                                  @Param("productIds") List<Integer> productIds);

    /* ---------- 7. 订单详情 ---------- */
    Order getOrderById(@Param("orderId") String orderId);


    /* ---------- 8. 退单审核 ---------- */
    int updateOrderStatus(@Param("orderId") String orderId,
                          @Param("status") Integer status);

    /* 9. 确认收货：同时更新订单状态+发货状态 */
    int receiveOrder(@Param("orderId") String orderId);

    /* ---------- 5. 个人中心 ---------- */
    Customer getCustomer(@Param("customerId") Integer customerId);

    List<Order> listOrders(@Param("customerId") Integer customerId);

    /* 10. 用户默认/全部收货地址 */
    List<Address> listAddress(@Param("customerId") Integer customerId,
                              @Param("defaultOnly") Integer defaultOnly);
}
